#include <cassert>
#include <cstring>
#include <iomanip>
#include <iostream>
using namespace std;

string base64le_encode(const string&charset, const string& src){
  enum{ MASK6 = 0x3F, MASK8 = 0xFF };
  string dst;
  // TODO: 实现小端序的Base64解码功能。
  return dst;
}

string base64be_encode(const string&charset, const string& src){
  enum{ MASK6 = 0x3F, MASK8 = 0xFF };
  string dst;
  // TODO: 实现大端序的Base64解码功能。
  return dst;
}

bool is_normal(char c){
  // 正规说法是“非保留字符（unreserved）”，但否定意义的命名干扰理解。
  // 本题不考察性能。如对速度有要求，可考虑换成bool flag[256]形式的查找表。
  static const string normal_chars{"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~"};
  return normal_chars.find_first_of(c) != string::npos;
}

unsigned char parse_hex(char h){
  if(h <= '9'){
    return h - '0';
  }else if(h <= 'F'){
    return h - 'A' + 10;
  }else{
    return h - 'a' + 10;
  }
}

unsigned char parse_byte(unsigned char hi, unsigned char lo){
  return (parse_hex(hi) << 4) | parse_hex(lo);
}

bool url_decode(const string& src, string& raw){
  // TODO: 重用《URL解码》题目的代码。
  return false;
}

int main(){
  string endian, charset;
  cin >> endian >> charset; // 数据首行：字节序、字符集。
  cin.get(); // 不能用ws，因数据可能有空行。
  bool le = (endian == "LE");
  assert(le || (endian == "BE"));
  for(string url_encoded; getline(cin, url_encoded);){
    string raw;
    bool ok = url_decode(url_encoded, raw);
    assert(ok);
    cout << (le ? base64le_encode : base64be_encode)(charset, raw) << endl;
  }
  return 0;
}